home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-10-22 | 2.2 KB | 130 lines | [TEXT/PJMM] |
- UNIT InterSLIP;
- INTERFACE
-
- {$IFC UNDEFINED THINK_PASCAL}
- USES
- Types;
- {$ENDC}
-
- CONST
- linkIdle = 0;
- linkWaitingForModem = 1;
- linkDialing = 2;
- linkLoggingIn = 3;
- linkConnected = 4;
- linkHangingUp = 5;
-
- TYPE
- InterSlipReportRec = RECORD
- linkState: LongInt;
- msgSeqNo: LongInt;
- msgStr: Ptr;
- END;
-
- FUNCTION InterSlipOpenDriver (VAR drvrRefNum: Integer): OSErr;
-
- FUNCTION InterSlipConnect (drvrRefNum: Integer): OSErr;
- FUNCTION InterSlipDisconnect (drvrRefNum: Integer): OSErr;
-
- FUNCTION InterSlipReport (drvrRefNum: Integer; VAR report: InterSlipReportRec): OSErr;
-
- FUNCTION CToPStr (c: Ptr): Str255;
-
- IMPLEMENTATION
-
- {$IFC UNDEFINED THINK_PASCAL}
- USES
- Files, Devices;
- {$ENDC}
-
- {$IFC NOT UNDEFINED THINK_PASCAL}
- FUNCTION PBControlImmed (pb: ParmBlkPtr): OSErr;
- INLINE
- $205F, $A204, $3E80;
- {$ENDC}
-
- FUNCTION InterSlipOpenDriver;
- BEGIN
- InterSlipOpenDriver := OpenDriver('.InterSLIP', drvrRefNum);
- END;
-
- FUNCTION InterSlipConnect;
- VAR
- pb: ParamBlockRec;
- count: Integer;
-
- BEGIN
- pb.ioRefNum := drvrRefNum;
- pb.csCode := 2;
-
- FOR count := 0 TO 10 DO
- pb.csParam[count] := 0;
-
- InterSlipConnect := PBControlImmed(@pb);
- END;
-
- FUNCTION InterSlipDisconnect;
- VAR
- pb: ParamBlockRec;
- count: Integer;
-
- BEGIN
- pb.ioRefNum := drvrRefNum;
- pb.csCode := 3;
-
- FOR count := 0 TO 10 DO
- pb.csParam[count] := 0;
-
- InterSlipDisconnect := PBControlImmed(@pb);
- END;
-
- FUNCTION InterSlipReport;
- TYPE
- LArray = ARRAY[0..4] OF LongInt;
- LArrayPtr = ^LArray;
-
- VAR
- pb: ParamBlockRec;
- count: Integer;
- err: OSErr;
-
- BEGIN
- pb.ioRefNum := drvrRefNum;
- pb.csCode := 4;
-
- FOR count := 0 TO 10 DO
- pb.csParam[count] := 0;
-
- err := PBControlImmed(@pb);
-
- IF err = noErr THEN
- BEGIN
- report.linkState := LArrayPtr(@pb.csParam)^[0];
- report.msgSeqNo := LArrayPtr(@pb.csParam)^[1];
- report.msgStr := Ptr(LArrayPtr(@pb.csParam)^[2]);
- END;
-
- InterSlipReport := err;
- END;
-
- FUNCTION CToPStr;
- TYPE
- BArray = PACKED ARRAY[0..254] OF Char;
- BArrayPtr = ^BArray;
-
- VAR
- str: Str255;
- i: Integer;
-
- BEGIN
- i := 0;
- WHILE (BArrayPtr(c)^[i] <> Char(0)) AND (i < 254) DO
- BEGIN
- str[i + 1] := BArrayPtr(c)^[i];
- i := i + 1;
- END;
- str[0] := Char(i);
- CToPStr := str;
- END;
-
- END.